#pragma once

#include <string>
#include <memory>

#include "api/p2pms_client_interface.hpp"
#include "api/video/video_frame.h"
#include "api/media_stream_interface.h"

namespace p2pms
{

//==================================================================================================
// 
//==================================================================================================
class IVideoRenderer : public rtc::VideoSinkInterface<webrtc::VideoFrame>
{
public:
    virtual ~IVideoRenderer() = default;

    // 获取媒体信息
    virtual const MediaInfo& GetMediaInfo() const = 0;

    // 设置渲染窗口
    virtual bool SetRenderWindow(void* window_handle) = 0;

    // 设置视频轨道
    virtual void SetVideoTrack(rtc::scoped_refptr<webrtc::VideoTrackInterface> video_track) = 0;

    // 需要立即刷新时调用
    virtual void OnPaint() = 0;

    // 窗口大小变化时调用
    virtual void OnWindowSizeChanged() = 0;

	// 开启渲染
	virtual void Start() = 0;

    // 停止渲染
	virtual void Stop() = 0;
};

}